format 8 
factor on 


* Functions & variables part:
func card1() 
#(Pdegrade)
end
func card2() 
#(Pdegrade)
end
func g1() 
*    (1<= (#(Pdegrade)+1))  && 
if (  ((#(Pdegrade)+1)<=g)  )
1
else
0
end
end
func g2() 
if ( g< #(Pdegrade)+1 < b )
1
else
0
end
end
func g3() 
if ( b<= #(Pdegrade)+1 <=K  )
1
else
0
end
end
func g4() 
if (  (#(Pinspection) == 0)  && (#(Pmaint) == 0) && (#(Pservice) > 0) && (#(Ppfail) == 0) )
1
else
0
end
end
func g5() 
if (  (#(Pinspection) == 0)  && (#(Pmaint) == 0) && (#(Pdegrade) != K) && (#(Ppfail) == 0) )
1
else
0
end
end
func g6() 
if (  (#(Pdegrade) != K) && (#(Pservice) > 0) && (#(Ppfail) == 0) )
1
else
0
end
end

bind 
N   7
K   5
lam   7
mu   1/(0.25)
lamD   0.03/5
lam0   0.03
mu0   1
end


srn model1(muD, lamIn, mum, muM, muIn)  
  * == PLACE == 
  Pjobs N
  Pservice 0
  Ppfail 0
  Pup K
  Pdegrade 0
  Pmaint 0
  Pclock 1
  Pinspection 0
  end
  * == Timed Transitions == 
  Tarrival ind lam 
  Tservice ind mu guard g5() 
  Tmrepair ind mu0 
  Tpfail ind lam0 guard g4() 
  Tdegrade ind K*lamD guard g4() 
  TMrepair ind muD guard g4() 
  Tinspinterval ind lamIn guard g6() 
  Tmmaint ind mum guard g2() 
  TMmaint ind muM guard g3() 
  Tinspection ind muIn 
  end
  * == Immediate Transitions ==  
  tnoaction ind 0.5 guard g1() priority 10 
  end
  * == ARC == 
  * Input Arcs 
  Pjobs Tarrival 1
  Pup Tpfail 1
  Ppfail Tmrepair 1
  Pservice Tservice 1
  Pup Tdegrade 1
  Pdegrade TMrepair K
  Pmaint tnoaction 1
  Pclock Tinspinterval 1
  Pinspection Tinspection 1
  Pmaint TMmaint 1
  Pdegrade TMmaint card1() 
  Pdegrade Tmmaint 1
  Pmaint Tmmaint 1
  end
  * Output Arcs 
  Tarrival Pservice 1
  Tservice Pjobs 1
  Tpfail Ppfail 1
  Tmrepair Pup 1
  Tdegrade Pdegrade 1
  TMrepair Pup K
  Tinspinterval Pinspection 1
  Tinspection Pmaint 1
  tnoaction Pclock 1
  TMmaint Pclock 1
  TMmaint Pup card2() 
  Tmmaint Pup 1
  Tmmaint Pclock 1
  end
  * Inhibtor Arcs 
end


echo *********************************************************************** 
echo *********  Outputs asked for the model: model1 ************** 

echo Steady-state throughput for Tservice 
expr tput(model1, Tservice; 1/2, 1/15, 1/.5, 1/5, 1/40)

end


